package org.zjt.weather.demo;

import org.apache.hadoop.io.DoubleWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 每行一个split块
 * <p>
 * DESC 将每行数据作为一个split输入，第一个分隔符前的作为key，第一个分隔符后为value。
 * <p>
 * PS:（ hadoop的默认分隔符为制表符 /t)
 * <p>
 * 文件类型：     （key [\t] value...）
 * <p>
 * 自定义分隔符：  config.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator", ",");
 *
 * @author
 * @create 2017-05-23 下午1:24
 **/

public class WeatherMapper extends Mapper<Text, Text, WeatherKey, DoubleWritable> {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override
    protected void map(Text key, Text value, Context context) throws IOException, InterruptedException {
        try {
            Date data = simpleDateFormat.parse(key.toString());
            WeatherKey key1 = new WeatherKey();

            key1.setYear(data.getYear() + 1900);
            key1.setMonth(data.getMonth() + 1);
            double c = Double.parseDouble(value.toString().substring(0, value.toString().indexOf("c")));
            key1.setHot(c);
            context.write(key1, new DoubleWritable(c));
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}
